package com.itr.kbm.service;

import java.io.File;
import java.util.List;

import org.springframework.web.multipart.MultipartFile;

import com.itr.kbm.model.Employee;
import com.itr.kbm.model.FileStatus;
import com.itr.kbm.model.Kopeg;
import com.itr.kbm.model.KoptelProduct;

public interface ExcelService {

	public boolean checkInListAdmin(String username, String password);
	public boolean checkInListKopeg(String username, String password);
	public boolean checkInListKoptelProduct(String username, String password);
	
	public boolean checkInListAdmin(String username);
	public boolean checkInListKopeg(String username);
	public boolean checkInListKoptelProduct(String username);
	
	public void resetPasswordAdmin(String username);
	public void resetPasswordKopeg(String username);
	public void resetPasswordKoptelProduct(String username);
	
	public void changePasswordAdmin(String username, String password);
	public void changePasswordKopeg(String username, String password);
	public void changePasswordKoptelProduct(String username, String password);
	
	public void saveExcel(MultipartFile file, String path);


	// ADMIN
	public String readEmployee(MultipartFile file, String path,
			String kodeKopeg, String months, String years, String user);

	public String readListKopeg(MultipartFile file, String path,
			String kodeKopeg, String months, String years, String user);

	public String readListKoptelProduct(MultipartFile file, String path,
			String kodeKoptelProduct, String months, String years, String user);
	
	// KOPEG
	public List<Kopeg> readKopeg(MultipartFile file, String path,
			String kodeKopeg, String months, String years, String user);
	
	public List<Employee> warningPensiunKopeg(List<Kopeg> listKopeg);

	
	public List<FileStatus> findByDate(String month, String year);

	public String merge(String years, String months, String path,
			String kodeKopeg, String user);

	public String mergeSplit(String years, String months, String path);

	public String delimitAngsuran(String years, String months, String path);

	public String delimitSimpanan(String years, String months, String path);

	public String perubahanAngsuran(String years, String months, String path);

	public String perubahanSimpanan(String years, String months, String path);

	public String angsuranLainLain(String years, String months, String path);

	public String zipFile(String years, String months, String zip, String source);

	public void generateFileList(File node, String SOURCE_FOLDER);

	public void zipIt(String zipFile, String SOURCE_FOLDER);

	public String generateZipEntry(String file, String SOURCE_FOLDER);

	public String validationCompareSimpananTetap(String path);
	public String validationCompareAngsuranTetap(String path);
	public String validationCompareAngsuranLainLain(String path);
	
	public List<FileStatus> findCompare(String month, String year);

	public String getDifference(String years, String months, String path,
			String kodeKopeg, String user);

	public String validationReportSimpananTetap(String path);
	public String validationReportAngsuranTetap(String path);
	public String validationReportAngsuranLainLain(String path);
	
	public List<FileStatus> findFinalReport(String month, String year);

	public String getSplitFinalReport(String years, String months, String path,
			String kodeKopeg, String user);
	
	//KOPTEL PRODUCT
	public List<KoptelProduct> readKoptelProduct(MultipartFile file, String path,
			String kodeKoptelProduct, String months, String years, String user, String product);

	public List<Employee> warningPensiunKoptelProduct(List<KoptelProduct> listKoptelProduct);
	
	public List<FileStatus> findByDateProduct(String month, String year);

	public String mergeProduct(String years, String months, String path,
			String kodeKoptelProduct, String user);

	public String validationCompareAngsuranTetapProduct(String path);
	public String validationCompareAngsuranLainLainProduct(String path);
	
	public List<FileStatus> findCompareProduct(String month, String year);

	public String getDifferenceProduct(String years, String months, String path,
			String kodeKoptelProduct, String user);

	public String validationReportAngsuranTetapProduct(String path);
	public String validationReportAngsuranLainLainProduct(String path);
	
	public List<FileStatus> findFinalReportProduct(String month, String year);

	public String getSplitFinalReportProduct(String years, String months, String path,
			String kodeKoptelProduct, String user);
}
